/**
 * @param {number[]} nums
 * @return {number[][]}
 */

var threeSum = function (nums) {
  let resArr = []
  last = null
  jlast = null
  let sortArr = nums.sort((a, b) => a - b)
  for (let i = 0; i < sortArr.length - 1; i++) {
    if (sortArr[i] + sortArr[i + 1] + sortArr[i + 2] > 0) {
      return resArr
    }
    if (sortArr[i] + sortArr[sortArr.length - 2] + sortArr[sortArr.length - 1] < 0) {
      continue
    }
    if (last !== sortArr[i]) {
      for (j = i + 1; j < sortArr.length - 1; j++) {
        if (sortArr[i] + sortArr[j] + sortArr[sortArr.length - 1] < 0) {
          continue
        }
        if (jlast !== sortArr[j]) {
          for (let k = sortArr.length - 1; k > j; k--) {
            if (sortArr[k] < 0) {
              continue
            }
            if (sortArr[k] === 0 - sortArr[i] - sortArr[j]) {
              resArr.push([sortArr[i], sortArr[j], sortArr[k]])
              break
            }
          }
        }

        jlast = sortArr[j]
      }
    }
    last = sortArr[i]
  }
  return resArr
}
console.log(threeSum([-1, 0, 1, 2, -1, -4]))
